/*
 * Copyright (c) 2013, 5 Idiots. All rights reserved.
 */
package safari.model.sell;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;

import safari.model.common.CommonConstants;
import safari.model.common.ListVO;
/**
 * SellBoardDaoImpl 클래스
 * @author Harry
 *
 */
public class SellBoardDaoImpl implements SellBoardDao {
	private SqlSessionTemplate sqlSessionTemplate;
	/**
	 * SellBoardDaoImpl의 생성자 
	 * 이 생성자의 인자값에 Spring DI 기법으로 SqlSessionTemplate bean을 주입해서 
	 * sqlSessionTemplate을 사용한다.
	 */
	public SellBoardDaoImpl(SqlSessionTemplate sqlSessionTemplate){
		this.sqlSessionTemplate=sqlSessionTemplate;
	}
	/**
	 * 판매 글을 등록하는 메서드
	 */
	@Override
	public void insertContent(SellBoardVO svo) throws SQLException {
		sqlSessionTemplate.insert("sell.insertContent", svo);
	}
	/**
	 * 상세 글 보기 페이지를 불러오는 메서드
	 */
	@Override
	public SellBoardVO selectContent(int sellNo) throws SQLException {
		return sqlSessionTemplate.selectOne("sell.selectContent", sellNo);
	}
	/**
	 * 게시글을 삭제하는 메서드
	 */
	@Override
	public void deleteContent(SellBoardVO svo) throws SQLException {
		sqlSessionTemplate.delete("sell.deleteContent", svo);
	}
	/**
	 * 게시글을 수정하는 메서드
	 */
	@Override
	public void updateContent(SellBoardVO svo) throws SQLException {
		sqlSessionTemplate.update("sell.updateContent", svo);
	}
	/**
	 * 게시글을 수정하는 메서드 (파일명을 제외한 정보를 수정)
	 * 
	 */
	@Override
	public void updateContentExceptFile(SellBoardVO svo) throws SQLException {
		sqlSessionTemplate.update("sell.updateContentExceptFile", svo);
	}
	/**
	 * 판매 게시판 목록을 불러오는 메서드
	 */
	@Override
	public List<SellBoardVO> selectContentList(int nowPage) throws SQLException {
		Map map=new HashMap();
		map.put("contentNumberPerPage",CommonConstants.CONTENT_NUMBER_PER_PAGE);
		map.put("nowPage",nowPage);
		return sqlSessionTemplate.selectList("sell.selectContentList", map);
	}
	/**
	 * 총 게시물 수를 불러오는 메서드
	 */
	@Override
	public int selectTotalContents() throws SQLException {
		return sqlSessionTemplate.selectOne("sell.selectTotalContents");
	}
	/**
	 * ???
	 */
	@Override
	public void selectUpdate() throws SQLException {
		// TODO Auto-generated method stub
	}
	/**
	 * 제목으로 검색하는 메서드
	 */
	@Override
	public List<SellBoardVO> selectContentListByTitle(SellBoardSearchVO sbsvo)
			throws SQLException {
		return sqlSessionTemplate.selectList("sell.selectContentListByTitle", sbsvo);
	}
	/**
	 * 내용으로 검색하는 메서드
	 */
	@Override
	public List<SellBoardVO> selectContentListByContent(SellBoardSearchVO sbsvo)
			throws SQLException {
		return sqlSessionTemplate.selectList("sell.selectContentListByContent", sbsvo);
	}
	/**
	 * 상품명으로 검색하는 메서드
	 */
	@Override
	public List<SellBoardVO> selectContentListByProductName(
			SellBoardSearchVO sbsvo) throws SQLException {
		return sqlSessionTemplate.selectList("sell.selectContentListByProductName", sbsvo);
	}
	/**
	 * 총 게시물 수를 제목으로 조회하는 메서드
	 */
	@Override
	public int selectTotalContentsByTitle(String keyword) throws SQLException {
		return sqlSessionTemplate.selectOne("sell.selectTotalContentsByTitle",keyword);
	}
	/**
	 * 총 게시물 수를 내용으로 조회하는 메서드
	 */
	@Override
	public int selectTotalContentsByContent(String keyword) throws SQLException {
		return sqlSessionTemplate.selectOne("sell.selectTotalContentsByContent",keyword);
	}
	/**
	 * 총 게시물 수를 상품명으로 조회하는 메서드
	 */
	@Override
	public int selectTotalContentsByProductName(String keyword)
			throws SQLException {
		return sqlSessionTemplate.selectOne("sell.selectTotalContentsByProductName",keyword);
	}
	/**
	 * 조회수를 1 증가시키는 메서드
	 */
	@Override
	public void updateHits(Map updateHitsVO) throws SQLException {
		sqlSessionTemplate.update("sell.updateHits",updateHitsVO);
	}
	/**
	 * 파일명(원본 파일명, 저장된 파일명)을 삭제하는 메서드
	 */
	@Override
	public void deleteFileName(String filename) throws SQLException {
		sqlSessionTemplate.selectOne("sell.deleteFileName", filename);
	}
	/**
	 * 상품명 검색어를 저장하는 메서드
	 */
	@Override
	public void insertHotKeyword(String keyword) throws SQLException {
		sqlSessionTemplate.insert("sell.insertHotKeyword", keyword);
	}
	/**
	 * 상품명 검색어의 검색된 횟수를 업데이트하는 메서드
	 */
	@Override
	public int updateHotKeyword(String keyword) throws SQLException {
		return sqlSessionTemplate.insert("sell.updateHotKeyword", keyword);
	}

}
